「TDDBC 長岡 2019-02」を2019/2/9(土)に開催しました #tddbc
2019/2/9(Sat)にTDDBC 長岡 2019-02を開催しました。
雪が降るなどあいにくの天候だったのですが、参加者の皆さんの熱意が感じられ、おかげさまでとても盛り上がった良いイベントとなりました。
本エントリでは、このTDDBCについて、詳しくレポートを行います。
注意事項
私事によりどうしても外せない用事があり、イベントの途中に一度席を外していました。その為、不在の間に行われたことについてレポートすることができません。
この間のことについては、本エントリの最後で紹介している他の参加者の皆さんのレポートやtogetterまとめをご覧ください。
開場前
早朝から講師、TAをはじめとしたスタッフ陣にお集まりいただき、1日の流れの再確認や会場の設営方針などを擦りあわせたあと、会場の設営を行いました。
今回のスタッフは次の方々でした。
- 講師
- @t_wada
- TDDの伝道師
- @t_wada
- TA
- @yattom
- ペアプロマスター、心理的安全性ゲーム in Developers.IO CAFEの講師
- @tosikawa
- グリーンバンドの元締め
- @i_takehiro
- TDDBC仙台の元締め、鬼のレビューで有名
- @dictav
- 前回のTDDBC長岡参加者、NDS FMのオーサー
- @circled9
- 前回のTDDBC長岡参加者、農業IT会社の中の人
- @yattom
歴戦の猛者揃いでしたので、準備はスムーズに進み、余り時間でやっとむさん持参の「自己紹介カードゲーム」などを使って、自己紹介を行なっていました。
開場・イベント開始
開場時間になると、続々と参加者の方がいらっしゃり、あっという間にテーブルが埋まっていきました。当日は少し天候が悪かったため、県内の自家用車組が数人遅れましたが、オリエンテーションの間には無事全員が揃うことができました。
オリエンテーションでは、私からイベントの趣旨の説明や会場の使い方、講師紹介などを行い、その後参加者の方全員から自己紹介も行っていただきました。この自己紹介タイムは私のこだわりで、せっかくおいでいただいた方々の人となりを知りたいので、前回も行なっていました。今回の参加者は県内外から下は高専生、上はベテラン勢と幅広い感じでした。
キーノート
キーノート始まりました #tddbc pic.twitter.com/b8Mcwi3r4z
— 白い高野さん (@masaru_b_cl) February 9, 2019
すっかりおなじみとなったt_wadaのスタンド「サバンナ・ライオン」も登場したキーノートセッションです。
私は始めの方だけしか見れなかったのですが、当日のTLを見る限り、流暢な説明に加えてライブコーディングでTDDの流れを魅力的に紹介した、素晴らしい内容だったようです。今度別のTDDBCに参加して、私も見てみたいと思います。
TDDワークショップ
午後はペアプロによるTDDワークショップです。
まず、ペアプロ自体が初めてという方が多いと思ったので、やっとむさんからペアプロのプロトコルについて紹介していただきました。
ペアプロは何よりも「会話」が重要で、最初はうまくできないのは当たり前なので、練習しようというメッセージが込められていました。
ちなみに、今回は次のようなペア構成でした。
- Python + pytest: 3組
- JavaScript + Jest: 3組
- Kotlin + JUnit: 1組
- Go: 1組
- C# + MSTest: 2組
そして、いよいよお題発表です。
.@t_wada 「君のような勘のいいガキは嫌いだよ」
マジで軽減税率だった・・・!!!!!!!! #tddbchttps://t.co/LkR19tyne1
— なかざん (@Nkzn) February 9, 2019
今が旬の「軽減税率」です。実際のお題がこちら。
当日は最初シナリオ0だけが提示されていて、TAもこの先どんな展開を見せるか知らされていないというエクストリームな状況でした。これまでのTDDBCのお題はあらかじめ「インターフェース」が決められていることも多かったのですが、今回はそういうものではないため、どのペアも最初の一歩に非常に苦労していたようです。
このくらいから私も会場に戻り、各ペアのサポートで会場を回っていました。印象的だったことを雑に列挙します。
- グリーンを維持したまま進めるか、大きなリファクタリングをするかで迷ったペアがちらほら
- TDDBCというイベントの性質ではグリーンを維持したまま進めて欲しいが、一気にコードを書いて大量のレッドが出るのもいい経験
- 指針としては「自分が安心できる」なら、一気に書き替えでも良いと思っているというようなことを伝えた
- どちらにしてもテストが守ってくれるので、後戻りしてやり直せば良い
- C#でテストの構造化をどうするか
- 内部クラスを使えばできるが、実際にどんな書き方をすればよかったかはうろ覚えだったので、とりあえず書いてみてテストを実行してみれば良いと伝えた
- テストケースがないテストクラスを作ってテストを実行し、成功するなら、その方針で徐々に書き替えて行けば良い
- 失敗するなら書き方が違うので、差分をWeb検索などで調べれば良い
- 内部クラスを使えばできるが、実際にどんな書き方をすればよかったかはうろ覚えだったので、とりあえず書いてみてテストを実行してみれば良いと伝えた
- 実装が先に浮かんでしまってテストが書けない
- 難しく考えすぎなのかもしれない
- まず、目に見える範囲で簡単なテストから始めるというのは、案外難しいようだった
熱を帯びています #tddbc pic.twitter.com/TWAd2MoRqh
— 白い高野さん (@masaru_b_cl) February 9, 2019
各ペアが会話しながら、TDDを進めていましたが、3時ごろに一度休憩タイムを入れました。
おやつタイム #tddbc pic.twitter.com/JuBUUIWu7N
— 白い高野さん (@masaru_b_cl) February 9, 2019
このおやつを用意するのも、TDDBCの定番です。ペアプロは実は非常に消耗するので、脳の栄養補給に美味しいお菓子があると嬉しいのです。
あとは、この休憩時間を使って、他のペアの様子などを相互に見てもらいました。自分たちとは違った視点の設計、コード、進め方が見てもらい、参考としてもらうためです。このとき面白かったのが、Pythonのテーブルで突発的にモブ・プログラミングが発生していたことです。それだけ、今回のお題に噛みごたえがあったということかもしれません。
小休止後はまたペアプロを再開し、16:30くらいまで各ペアに作業をしてもらいました。
レビュータイム
その後、全ペアから自分たちの成果を発表してもらい、全員からのレビューを受ける時間を設けました。これは、他の言語の特徴を知ってもらうことや、講師・TAを始めとした多くの人に「コードを見てもらう」ことを体験してもらう狙いがありました。
実際のレビューでは、i_takehiroさんによるちらっと見えただけであろう部分についての見逃さない指摘があったり、TODOリストの作り方、TDDの進め方、ペアでの設計の詰め方など、多彩な視点での発表があり、非常に有意義な時間になりました。
クロージング
最後に、t_wadaから全体の総括と、TDDBCのその後の進め方などについて紹介がありました。
改めてTDDは開発手法であること、とはいえテストを効率的にやる方法はあること、設計原則などを身につけていく必要があること、などを説明いただきました。
懇親会
本編終了後は、その場でそのままビア・バッシュ形式での懇親会となりました。熱を帯びたまま、様々なところで会話が弾んでいるようで、これはこの形式でよかったなと感じました。
また、ある程度たった頃には突発的なLTタイムが始まりました。
.@t_wada さんの「よくわかる軽減税率SuperHard」 pic.twitter.com/A6wpnLRea8
— なかざん (@Nkzn) February 9, 2019
- t_wadaによる地獄の軽減税率の話
- 私からTDDBC開催にかける思いの話(やっとむさんのリクエスト)
- 上・中・下越それぞれで今後開催されるITイベントの紹介
など、数多くの発表をしてもらい、大盛況のうちにイベントは幕を閉じました。
全体を振り返って
久々のTDDBC開催となりましたが、前回とは参加者の世代が1つ変わった感じがあり、改めて開催してよかったと感じました。また、前回はRubyが多かったのですが、今回はPython、JSが最多という、時代の流れも感じました。
とはいえ、TDDの本質は何も変わっていませんし、むしろ「テストがあるのが当たり前」という時代になっているからこそ、ちゃんとテストを書くために、TDDBCはまだまだ意義のあるイベントだと確認することもできました。
すぐにとは言いませんが、近い将来にまたTDDBCを継続的に開催していきたいと思います。また、他の地域のTDDBC開催の話があれば、積極的に協力していきたいとも思いました。